One goal of a communication system is to transport information from one physical location to another. In most electronic communication systems, the communication itself takes place between electronic components. Often, these electronic components are integrated circuits (“ICs”) and this communication setting is referred to as “chip-to-chip communication.” The communicating electronic components might be located in the same apparatus, such as the communication between a central processing unit (“CPU”) and memory inside a computer, tablet computing device, or other mobile device. Another example is the communication between two CPU cores that are integrated on the same chip. Yet another example is the communication between a Graphics Processing Unit (“GPU”) and memory on a graphics card. In these cases, the actual communication takes place over wires on a printed circuit board (“PCB”) and/or metal wires integrated in a chip and these wires carry electrical signals. It should be apparent upon reading this disclosure that other possibilities exist. The communication may, for instance, take place wirelessly or over an optical fiber.
In some cases, communication takes place between components that are located in different apparatuses, in which case this type of communication is sometimes called device-to-device communication. An example of this situation is a digital photo camera that is connected to a computer. In this setting, the communication takes place over a physical cable or wirelessly, wherein the physical cable may consist of one or several wires. Another example is a set of computers that is connected to a network. The electronic components on the network card of each computer communicate with the electronic components of another network card of yet another computer.
In all these communication settings, a goal is to transmit digital information from one electronic component to another in a reliable and efficient way. In this context, digital information is to be understood as information available in discrete, i.e., discontinuous values. Bits, a collection of bits, but also numbers from a finite set can be used to represent digital information. The efficiency of the communication can be expressed in terms of the time it takes to transfer a certain amount of information (speed), the energy that is required to transmit the information reliably (power consumption) and the number of wires per bit that is required for communication (pin-efficiency). In most systems, several trade-offs exist between these parameters and, depending on the application, some of these parameters may be more important than others. A good example is the communication between a CPU and a memory in a mobile device. A battery feeds a mobile device and the power consumption of the communication between the CPU and memory has a large impact on the battery life. When the device is wall-plugged, power consumption may be less of an issue, but the design needs to deal with the unplugged environment.
In most chip-to-chip, or device-to-device communication systems, communication takes place over a plurality of wires to increase the aggregate bandwidth. A single wire or a pair of these wires may be referred to as a channel or link and multiple channels create a communication bus between the electronic components.
The difficulty in designing high speed, low power and pin-efficient chip-to-chip or device-to-device communication systems lies in part in the fact that the communication channel is not perfect. First, the physical wires will mutually disturb the signals transmitted on them and noise and interference will be added to the transmitted signals. Second, the electronic components used to implement the communication system may not be perfect and this may disturb the signals used for communication.
Some solutions to these problems are taught by Cronie I, Cronie II, SPM and SUPM respectively, showing, among other things, various methods based on Orthogonal Differential Vector Signaling, Permutation Modulation Codes, Sparse Signaling Codes, Superposition Signaling Codes to further optimize the tradeoff between power consumption, pin efficiency and noise robustness of chip-to-chip communication systems. A common theme in Cronie I, Cronie II, SPM and SUPM is that the modulation methods and/or coding methods are designed for typically more than two wires. In this disclosure we refer collectively to the methods disclosed in Cronie I, Cronie II, SPM, SUPM and similar extensions as vector signaling methods, as opposed to “traditional” or “conventional” signaling methods which are designed for one or two wires at a time. The present invention also applies to prior art vector signaling methods not covered by Cronie I, Cornie II, SPM, or SUPM, as for example stipulated in U.S. Pat. No. 6,661,355 by Cornelius and Althas (hereinafter referred to as “Cornelius”) or U.S. Pat. No. 6,556,628 by Poulton et al. (hereinafter referred to as “Poulton”). While vector signaling already provides substantial improvements regarding the tradeoff of pin-efficiency, power efficiency and noise resilience as compared to other approaches, there are some applications wherein additional improvements are possible, and sometimes may be necessary. For instance, in very high-speed communication systems, further resilience may be required to combat inter-symbol interference (“ISI”) and crosstalk noise. Therefore dedicated equalization has to be performed at the receiver side. Prior art equalization methods for a chip-to-chip communication system are based on conventional signaling methods and are not adapted to maintain the advantages of vector signaling methods. Therefore, what is needed is an equalization method that further optimizes the communication system's power efficiency and noise resilience tradeoffs while still benefiting from the substantial pin-efficiency improvement brought by permutation modulation codes and sparse signaling codes or other vector signaling methods that operate on more than two bus wires. Such an equalization method is disclosed in this application and embodiments of the invention are directed towards solving these and other problems individually and collectively.